package HomeWork20241215.Student;

import java.util.Scanner;
/*
* 要求1：添加的时候需要进行学号的唯一性判断。
* 要求2：添加完毕之后，遍历所有学生信息。
* 要求3：通过id删除学生信息
* 如果存在，则删除，如果不存在，则提示删除失败。
* 要求4：删除完毕之后，遍历所有学生信息。
* 要求5：id为2的学生，年龄+1岁
* */
public class Test {
    private static Student[] students = new Student[3];
    private static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        int choice;
        do {
            printMenu();
            choice = getChoice();

            switch (choice) {
                case 1:
                    addAndPrintStudents();
                    break;
                case 2:
                    deleteStudentById();
                    break;
                case 3:
                    printStudentInfo();
                    break;
                case 4:
                    System.out.println("退出程序");
                    break;
                default:
                    System.out.println("无效的选择，请重新选择");
            }
        } while (choice != 4);
    }
    /**
     * 菜单
     */
    public static void printMenu() {
        System.out.println("\n请选择操作:");
        System.out.println("1. 添加并打印三个学生信息");
        System.out.println("2. 删除学生信息");
        System.out.println("3. 打印所有学生信息");
        System.out.println("4. 退出程序");
    }

    /**
     * 获取用户的选择
     * @return 用户选择的操作
     */
    public static int getChoice() {
        System.out.print("请输入选项: ");
        int choice = scanner.nextInt();
        scanner.nextLine();
        return choice;
    }

    /**
     * 添加并打印三个学生信息方法
     */
    public static void addAndPrintStudents() {
        for (int i = 0; i < students.length && i < 3; i++) {
            String idStr = "";
            int id = 0;
            System.out.println("请输入第" + (i + 1) + "个学生的信息:");

            while (true) {
                System.out.print("学号:");
                idStr = scanner.nextLine().trim();
                if (!idStr.isEmpty()) {
                    try {
                        id = Integer.parseInt(idStr);
                        if (isUniqueId(id)) {
                            break;
                        } else {
                            System.out.println("ID已存在");
                        }
                    } catch (NumberFormatException e) {
                        System.out.println("无效的ID格式，请输入数字");
                    }
                } else {
                    System.out.println("ID不能为空，请重新输入");
                }
            }

            System.out.print("姓名:");
            String name = scanner.nextLine();

            System.out.print("年龄:");
            if (scanner.hasNextInt()) {
                int age = scanner.nextInt();
                scanner.nextLine(); // 清空换行符
                // id为2的学生年龄+1
                if (id == 2) {
                    age++;
                }
                students[i] = new Student(id, name, age);
            } else {
                System.out.println("无效的年龄格式，请输入数字");
                scanner.nextLine(); // 清除错误的输入
                i--; // 如果年龄输入有误，则保持索引不变
            }
        }
        printStudentInfo(); // 添加完所有学生后打印信息
    }

    /**
     * 删除学生信息方法
     */
    public static void deleteStudentById() {
        System.out.print("请输入要删除的学生的学号:");
        String idStr = scanner.nextLine();
        try {
            int id = Integer.parseInt(idStr);
            for (int i = 0; i < students.length; i++) {
                if (students[i] != null && id == students[i].getId()) {
                    students[i] = null;
                    System.out.println("删除成功");
                    printStudentInfo(); // 删除完所有学生后打印信息
                    return;
                }
            }
            System.out.println("删除失败，未找到指定ID的学生");
        } catch (NumberFormatException e) {
            System.out.println("无效的ID格式，请输入数字");
        }
    }


    /**
     * 打印所有学生信息方法
     */
    public static void printStudentInfo() {
        boolean hasStudents = false;
        for (Student student : students) {
            if (student != null) {
                System.out.println(student.toString());
                hasStudents = true;
            }
        }
        // 只有在没有任何学生信息时才提示用户
        if (!hasStudents) {
            System.out.println("还未添加学生信息,请先添加学生信息再进行打印");
        }
    }

    /**
     * 判断学号是否唯一
     * @param id
     * @return
     */
    public static boolean isUniqueId(int id) {
        for (int i = 0; i < students.length; i++) {
            if (students[i] != null && id == students[i].getId()) {
                return false;
            }
        }
        return true;
    }
}
